<?php
/**
 * MyDBConnection.class.php
 * 
 * (C) 2009, tetsuya.odaka(EzoGP).
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * DB接続のためのユーティリティー
 * 
 * コネクションを取得したいときに利用してください。
 * 
 * 動作確認はMySQL 5.0.67、SQLite2で行っています。
 * （pgsql, oracleはこれでいけるはず）
 * 
 * （注意）　コネクションを取得した場合には、処理後、必ず
 *        コネクションを解放してください。
 * 
 * author；	t.odaka
 * date ;	2009/02/26
 * 
 * modified; 2009/5/20	t.odaka	classに変更。
 * 
*/

class MyDBConnection {
			
		/*
		 * プロパティー
		 */
		var $Database;
		var $Dbuser;
		var $Dbpass;
		var $Dbhost;
		var $Dbname;
		var $Apppath;
		
		/* 
	 	* デフォルトのコンストラクタ 
	 	* 
	 	* Config.phpに書いたデータベース定義を読み込む
	 	* 
	 	*/
		function __construct() {
		
			// 定数の読み込み
			require_once("../Myznala/Config.php");
			$this->Database	=	DATABASE;
			$this->Dbuser	=	USER_NAME;
			$this->Dbpass	=	PASSWORD;
			$this->Dbhost	=	HOST;
			$this->Dbname	=	DB_NAME;
			$this->Apppath	=	APP_PATH;

		}
		
		/* 
	 	* DBコネクションを取得します。 
	 	*/
		function getConnection(){
		
			// PEAR::MDB2を使う
			require_once("../PEAR/MDB2.php");
		
			// Myznala組み込みのsqliteを使う場合
			if($this->Database == "sqlite"){
				$_connSentence="$this->Database:///$this->Apppath/sqlite2/$this->Dbname";
				$_conn = MDB2::factory($_connSentence);
				// エラー処理
				if(MDB2::isError($_conn)){ die($_conn->getmessage());}  // 死ぬ

			// mysqlを使う場合
			} elseif($this->Database == "mysqli" || $this->Database == "mysql") {
				// コネクションの取得
				$_connSentence="$this->Database://$this->Dbuser:$this->Dbpass@$this->Dbhost/$this->Dbname?charset=utf8";	
				$_conn = MDB2::factory($_connSentence);
				// エラー処理
				if(MDB2::isError($_conn)){ die($_conn->getmessage()); } //　死ぬ
				
				// Mysql4.1-の時、エンコーディングをutf-8に強制する。
//				if($this->Database == "mysqli"){
//					$_sql="SET NAMES UTF-8";
//					$_res=$_conn->query($_sql);
					
					// エラー処理
//					if(MDB2::isError($_conn)){ die($_conn->getmessage()); } //　死ぬ
//				}
							
			// pgsql, oracleを使う場合（未検証だよー）
			}else{
				// コネクションの取得
				$_connSentence="$this->Database://$this->Dbuser:$this->Dbpass@$this->Dbhost/$this->Dbname";	
				$_conn = MDB2::factory($_connSentence);
				// エラー処理
				if(MDB2::isError($_conn)){ die($_conn->getmessage()); } // 死ぬ
			}
			
			return $_conn;
	}
	
	/* 
	* DBコネクションをクローズします。 
	*/
	function closeConnection($_conn){
		$_conn->disconnect();
	}
}
?>